home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 46 / Amiga Format CD46 (1999-10-20)(Future Publishing)(GB)[!][issue 1999-12].iso / -in_the_mag- / reader_requests / scilab / tests / matopt.tst < prev    next >
Text File  |  1999-09-16  |  5KB  |  134 lines

  1. Leps=2.e-5;
  2. bs=10.*ones(1,5);bi=-bs;x0=0.12*bs;epsx=1.e-15*x0;xopt=.1*bs;
  3. [f,x,g]=optim('genros',x0,'in');
  4. if abs(f-1+norm(x-xopt) ) > Leps then pause,end
  5. [f,x,g]=optim('genros',x0,'gc','in');
  6. if abs(f-1+norm(x-xopt) ) > Leps then pause,end
  7. //
  8.  
  9. [f,x,g]=optim('genros',x0,'nd','in');
  10. if abs(f-1+norm(x-xopt) ) > Leps then pause,end
  11.  
  12. [f,x,g]=optim('genros',x0,'qn',1,'in');
  13. if abs(f-1+norm(x-xopt) ) > Leps then pause,end
  14. [f,x,g]=optim('genros',x0,'gc',1,50,'in');
  15. if abs(f-1+norm(x-xopt) ) > Leps then pause,end
  16. //
  17. [f,x,g]=optim('genros',x0,'nd',1,50,'in');
  18. if abs(f-1+norm(x-xopt) ) > Leps then pause,end
  19.  
  20. [f,x1,g]  =optim('genros',x0,   'ar',100,6,'in');
  21. [f,x,g,to]=optim('genros',x0,   'ar',100,3,'in');
  22. [f,x,g,to]=optim('genros',x ,to,'ar',100,3,'in');
  23. if norm(x-x1)/norm(x-xopt) > 0.1 then  pause,end
  24. [f,x1,g]=optim('genros','b',bi,bs,x0,'ar',100,6,'in');
  25. [f,x,g,to]=optim('genros','b',bi,bs,x0,'ar',100,3,'in');
  26. [f,x,g]   =optim('genros','b',bi,bs,x,to,'ar',100,3,'in');
  27. if norm(x-x1)/norm(x-xopt) > 0.1 then  pause,end
  28. [f,x,g]=optim('genros',x0,'ar','in');
  29. if abs(f-1+norm(x-xopt) ) > Leps then pause,end
  30. [f,x,g]=optim('genros',x0,'ar',100,'in');
  31. if abs(f-1+norm(x-xopt) ) > Leps then pause,end
  32. [f,x,g]=optim('genros',x0,'ar',100,100,'in');
  33. if abs(f-1+norm(x-xopt) ) > Leps then pause,end
  34. [f,x,g]=optim('genros',x0,'ar',100,100,%eps,'in');
  35. if abs(f-1+norm(x-xopt) ) > Leps then pause,end
  36. [f,x,g]=optim('genros',x0,'ar',100,100,%eps,%eps,'in');
  37. if abs(f-1+norm(x-xopt) ) > Leps then pause,end
  38. [f,x,g]=optim('genros',x0,'ar',100,100,10.*%eps,%eps,epsx,'in');
  39. if abs(f-1+norm(x-xopt) ) > Leps then pause,end
  40. [f,x,g]=optim('genros',x0,'gc','ar',100,100,%eps,%eps,epsx,'in');
  41. if abs(f-1+norm(x-xopt) ) > Leps then pause,end
  42. //
  43. [f,x,g]=optim('genros','b',bi,bs,x0,'in');
  44. if abs(f-1+norm(x-xopt) ) > Leps then pause,end
  45. [f,x,g]=optim('genros','b',bi,bs,x0,'gc','in');
  46. if abs(f-1+norm(x-xopt) ) > Leps then pause,end
  47. [f,x]=optim('genros','b',bi,bs,x0,'ar',100,100,1.d-8,'in');
  48. if abs(f-1+norm(x-xopt) ) > Leps then pause,end
  49. [f,x,g]=optim('genros',..
  50.    'b',bi,bs,x0,'gc','ar',100,100,%eps,%eps,epsx,'in');
  51. if abs(f-1+norm(x-xopt) ) > Leps then pause,end
  52. [f,x,g,to,td]=optim('genros',x0,'in','sd');
  53. if abs(f-1+norm(x-xopt) ) > Leps then pause,end
  54. [f,x,g,ti]=optim('genros',x0,'gc','in','si');
  55. if abs(f-1+norm(x-xopt) ) > Leps then pause,end
  56. [f,x,g,to,ti,td]=optim('genros',x0,to,'in','si','sd');
  57. if abs(f-1+norm(x-xopt) ) > Leps then pause,end
  58. [f,x,g,td]=optim('genros',..
  59.    'b',bi,bs,x0,'gc','ar',100,100,%eps,%eps,epsx,'in','sd');
  60. if abs(f-1+norm(x-xopt) ) > Leps then pause,end
  61. [f,x,g,ti]=optim('genros',x0,'gc','ar',100,100,%eps,'in','si');
  62. if abs(f-1+norm(x-xopt) ) > Leps then pause,end
  63. [f,x,g,ti,td]=optim('genros',..
  64.     x0,'gc','ar',100,100,%eps,'in','si','sd');
  65. if abs(f-1+norm(x-xopt) ) > Leps then pause,end
  66. [f,x,g,ti,td]=optim('genros',..
  67.     x0,'gc','ar',100,100,%eps,'in','ti',ti,'td',td,'si','sd');
  68. if abs(f-1+norm(x-xopt) ) > Leps then pause,end
  69. //
  70. //********************************************************************
  71. //
  72. bs=[5 5];bi=-bs;x0=1.05*[1 1];xopt=[1 1];
  73. deff('[f,g,ind]=rose(x,ind)', 'a=x(2)-x(1)^2 , b=1-x(2) ,...
  74. f=50.*a**2 + b**2 , g(1)=-400.*x(1)*a , g(2)=200.*a -2.*b ');
  75. comp(rose);
  76. //[f,x,g,tr]=optim(rose,x0,'qn','ar',50);if abs(f+norm(x-xopt)) > Leps then pause,end
  77. //[f,x,g]=optim(rose,x0,tr,'ar',50);if abs(f+norm(x-xopt)) > Leps then pause,end
  78. [f,x,g]=optim(rose,x0,'gc','ar',50);if abs(f+norm(x-xopt)) > Leps then pause,end
  79. //
  80. [f,x,g]=optim(rose,x0,'nd','ar',50);
  81. if abs(f+norm(x-xopt)) > Leps then pause,end
  82.  
  83. [f,x,g]=optim(rose,'b',bi,bs,x0,'qn','ar',25);
  84. if abs(f+norm(x-xopt)) > Leps then pause,end
  85. [f,x,g]=optim(rose,'b',bi,bs,x0,'gc','ar',50);
  86. if abs(f+norm(x-xopt)) > Leps then pause,end
  87. [f,x,g,td]=optim(rose,x0,'gc','ar',50,'sd');
  88. if abs(f+norm(x-xopt)) > Leps then pause,end
  89. [f,x,g,ti]=optim(rose,x0,'gc','ar',50,'si');
  90. if abs(f+norm(x-xopt)) > Leps then pause,end
  91. [f,x,g,ti,td]=optim(rose,x0,'gc','ar',50,'si','sd');
  92. if abs(f+norm(x-xopt)) > Leps then pause,end
  93. //
  94. // penalization (see doc)
  95. //
  96. // min (x1^2 +x2^2)/2 ; x1>=0, x1 + x2 =1 (solution [0.5 0.5] )
  97. deff('[f,g,ind]=sip2(x,ind)',..
  98. ' f= [ x(1)+x(2)-1, -x(1), (x(1)^2+x(2)^2)/2],..
  99.   g= [ 1, -1, x(1); 1,  0, x(2)] ');
  100. cpen=50; ne=1; nc=2;bi=[0 0]; bs=[2 2];
  101. deff('[fpen,gpen,ind]=sipn(x,ind,sip1,ne,nc,cpen)',...
  102. ['[f,g,indic]=sip1(x,ind)';
  103. 'if indic < 0 then ind=indic, return, end';
  104. 'if nc >ne then for i=ne+1:nc, f(i)=maxi([0 f(i)]), end,end';
  105. 'fpen=f(nc+1) + cpen*norm(f(1:nc))^2/2';
  106. 'if ind=2 then return,end';
  107. 'gpen=g(:,nc+1)';
  108. 'if ne > 0 then';
  109. '   for i=1:ne, gpen=gpen + cpen*f(i)*g(:,i),end,end';
  110. 'if nc > ne then';
  111. ' for i=ne+1:nc, if f(i) > 0 then gpen=gpen + cpen*f(i)*g(:,i),end,end;end;'])
  112. comp(sipn);
  113. [f,x,g]=optim(list(sipn,sip2,ne,nc,cpen),...
  114.               'b',bi,bs,[1 1],'ar',20,20,1.e-15);
  115. if norm(x-[0.5 0.5]) + norm(g) > 0.1 then pause,end
  116. //********************************************************************
  117. deff('[f,g,ind]=ndsim(x,ind)', 'y=a*x-b;f=norm(y,2)^2;g=2*a''*y')
  118. a=rand(2,2);b=eye(a);
  119. [f,x,g]=optim(ndsim,eye(2,2));
  120. if norm(x-inv(a))>Leps then pause,end
  121.  
  122. deff('[f,g,ind]=ndsim(x,ind)', 'y=a*x-b;f=sum(abs(y));g=a''*sign(y)')
  123. a=rand(2,2);b=[1;0];ai=inv(a);
  124. [f,x,g]=optim(ndsim,[1;0],'nd');
  125. if norm(x-ai(:,1))>Leps then pause,end
  126.  
  127. //deff('[f,g,ind]=ndsim(x,ind)', [
  128. //'y=a*x-b;f=max(abs(y)),sel=abs(y)==f'
  129. //'g=a(sel,:)''*sign(y(sel))'])
  130. //a=rand(2,2);b=[1;0];ai=inv(a);
  131. //[f,x,g]=optim(ndsim,[1;0],'nd');
  132. //if norm(x-ai(:,1))>Leps then pause,end
  133.  
  134.